<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<p id="demo">一个段落</p ><br>
	<button type="button" onclick="myFunc()">点我</button>
	<!-- http://www.runoob.com/js/js-loop-for.html -->
</body>
	<script type="text/javascript">
		// document.write("你好" + '<br>' + " 世界!");


// function sumStrings(a,b){
//     var res='', c=0;
//     a = a.split('');
//     b = b.split('');
//     while (a.length || b.length || c){
//         c += ~~a.pop() + ~~b.pop();
//         console.log(c)
//         res = c % 10 + res;
//         c = c>9;
//     }
//     return res.replace(/^0+/,'');
// }
// sumStrings("321111111111111111111111","132111111111111111111111111111111")
//一、求整数之间被5或7等整数整除和算出之间的和、差等
 // function my(){
// 	var sum=0, result=1;
//     for (var i = 1; i<=16; i ++) {
//         if(i%3==0){
//         sum= sum-i
//         } 
//         if(i%5==0){
//            result = result * i
//         }
	
//     }


// 	console.log(sum);
// 	console.log(result);

// }
// my()

// function myDemo1(a,b){
// 	if (a!=0&&b!=0) {
//      return a/b ;
// 	}else{
// 		if(a==0){
// 			alert("a不能等于0")
// 		}
// 		if(b==0){
// 			alert("b不能等于0")
// 		}
// 	}
// }
// console.log(myDemo1(2,0))
function isArray(o){
return Object.prototype.toString.call(o)=='[object Array]';
}
function myDemo2(arr){
	var sum=0
	if(isArray(arr)){
        for (var i = 0; i<arr.length; i++) {
        sum = sum+arr[i]
       }
	}else{
		console.log("参数不是数组")
	}
return sum

} 
var arrs=[1,2,3]

console.log(myDemo2(arrs))

// function page(m,n){
//   if(m%n==0){
//     result= m/n
//   }else{

//   	result=Math.ceil(m/n)
//   }
//   if(m==0){
//   	alert("m不能等于0")
//   }
//   if(n==0){
//   	alert("n不能等于0")
//   }
//   if(m<0){
//   	alert("m不能等于负数")
//   }

//   if(n<0){
//   	alert("n不能等于负数")
//   }
// return result
// }

// console.log(page(13,2))

// 1、判断的严谨性
// 2、变量编写不一致
// 3、算法问题
// 计划：
// 多看demo的和算法的逻辑，
// 中午和晚上时间抽出半小时或者一小时看

// 字符串方法、
// 1、indexOf 通过字符中的值指定索引
// var a ="qwerty"
// var b=a.indexOf("ty")//4

// // 2、charCodeAt unicode编码
// var str = "aBC"; 
// str.charCodeAt(0); //97
// // 3\fromCharCode
// var a=String.fromCharCode(65,66,11); 
// console.log(a)
// // 3 charAt通过索引指定字符串中的值
// var str = "ABC"; 
// str.charAt(1);
// // 4 slice t通过索引截取值
// var string="qweqwrqr"
// console.log(string.slice(0,4))
// // 5、substr
// var strs = "ABCDEF"; 
// console.log(strs.substr(-2,4));
// // 6、indexOf  注意第一次出现
// var str = "ABCDECDF"; 
// str.indexOf("CD"，1); //索引 为2
// // 7、lastIndexOf 注意最后一次出现
// var str = "ABCDECDF"; 
// str.indexOf("CD"，6); //索引 为5
// //8、 search方法返回与正则表达式查找内容匹配的第一个字符串的位置。 
// // strObj.search(reExp) 
// var str = "ABCDECDF"; 
// alert(str.search("CD"));
 // 或 str.search(/CD/i); 
// 9、concat方法返回字符串值，该值包含了两个或多个提供的字符串的连接。
// var str = "ABCDEF"; 
// console.log(str.concat("123","ABC","456"));//ABCDEF123ABC456
// 10、split 将一个字符串分割为子字符串，然后将结果作为字符串数组返回
// var str = "AA BB CC DD EE FF"; 
// alert(str.split(" ",4));AA,BB,CC,DD
// 11、test() 方法用于检测一个字符串是否匹配某个模式，如果字符串中含有匹配的文本，则返回 true，否则返回 false。
// var patt = /e/;
// console.log(patt.test("The best things in life are free!"));
// console.log(patt.exec("The best things in life are free!"));
// 声明变量

// x = 5; // 变量 x 设置为 5

// elem = document.getElementById("demo"); // 查找元素 
// elem.innerHTML = x;                     // 在元素中显示 x

// var x; // 声明 x

// var x = 5; // 初始化 x
// var y;     // 声明 y

// elem = document.getElementById("demo"); // 查找元素
// elem.innerHTML = x + " " + y;           // 显示 x 和 y

// y = 7;    // 设置 y 为 7

// 12、 浮点型的是很难确定的  也不能比较（==）

// 13 、return换行会返回undefined 
// var str=/^([0-9a-zA-Z\-_\.])+@([0-9a-z]){1,}\.([a-zA-Z])+/;

// /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ 
// var str=/^(\d\w\W\_\.)+@(\d\w){1,}\.(\w)+$/;
  // console.log(str.test("2793647dasd52_.@163.com"))
//14、 <input id="id1" type="number" min="100" max="300" required>
// <button onclick="myFunction()">验证</button>
 
// <p id="demo"></p >
 
// <script>
// function myFunction() {
//     var inpObj = document.getElementById("id1");
//     if (inpObj.checkValidity() == false) {
//         document.getElementById("demo").innerHTML = inpObj.validationMessage;
//     }
// }
// function Myfunction(a,b){
// 	return a+b
// }
// var a=new Myfunction(1,2)
// console.log(a)

//15、 求最小数
// var numArr=[123,312,2,3,]
// function minNum(arr){
// 	if(arr.length==null||arr.length==undefined ||arr.length==0){
	
//         return null
// 	}else{
// 		var min = arr[0]
//          for(var i=0;i<arr.length;i++){
//              if(arr[i]<min){
//                 min= arr[i]
//              }
//          }
// 	}
// 	return min
// }
// alert(minNum(numArr))
// 求最大数

// function maxNum(arr){
// 	if(arr ==null||arr==undefined||arr.length==0){
//          alert("数组不能为空")
      
// 	}else{
// 	var max = arr[0];
// 		for (var i = 0; i<arr.length;i++) {
// 			 if(arr[i]>max){
// 			 	max = arr[i];
// 		 }
//          return max
// 		}
// 	}	
// }
// var arrays=[213,3,33]
// alert(maxNum(arrays))

// 16、构造函数

// function Num(a,b,c){
//        this.a = a;
//        this.b = b;
//        this.c = c;
//      }
//       var p1=new Num(1,2,3);
//       alert(p1.a+p1.b+p1.c)
// var qqw;
// function myFunction(a, b) {
//     return a * b;
// }
// myObject = myFunction.call(qqw, 10, 2);

// alert(myObject)

// var myObject, myArray;
// function myFunction(a, b ,c) {
//     return a * b*c;
// }
// myArray = [10, 2,3]
// myObject = myFunction.apply(myObject, myArray);
// alert(myObject)
// call和 apply 用法 第一个参数必须是对象本身
// function add(a,b) 
// { 
// return a+b; 
// } 
// function sub(a,b) 
// { 
// return a-b; 
// } 
// alert(add.call(sub,3,1));
// alert(add.call(add,4,4));
// 17、闭包是可访问上一层函数作用域里变量的函数，即便上一层函数已经关闭。
// 
// 18、addEventListener(事件, 回调, 是否冒泡或捕获);
// 默认值为 false, 即冒泡传递，（从里到外）当值为 true 时, 事件使用捕获传递。（从外到里）
// 19 、对象
// function person(firstname,lastname,age,eyecolor){
// 	this.firstname=firstname;
// 	this.lastname=lastname;
// 	this.age=age;
//     this.eyecolor=eyecolor;
// }
// myFather=new person("John","Doe",50,"blue");

// console.log(myFather)
// 20、进制
  // 十六进制转换有16进制每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F16个大小不同的数，即逢16进1，其中用A，B，C，D，E，F（字母不区分大小写）这六个字母来分别表示10，11，12，13，14，15。
// 如果前缀为 0，则 JavaScript 会把数值常量解释为八进制数，如果前缀为 0 和 "x"，则解释为十六进制数。
// 比如：2 的二进制 10  
// 16的8进制 20 加前缀0 20
// 40 的16进制 28  加前缀 0 28
   // 240的16进制A0 加前缀 0X A0
 // 常数
 // 圆周率
 // 2 的平方根
 // 1/2 的平方根
 // 2 的自然对数
 // 10 的自然对数
 // 以 2 为底的 e 的对数
 // 以 10 为底的 e 的对数
 // 这是在 Javascript 中使用这些值的方法：（与上面的算数值一一对应）
 // Math.E
 // Math.PI
 // Math.SQRT2
 // Math.SQRT1_2
 // Math.LN2
 // Math.LN10
 // Math.LOG2E
 // Math.LOG10E
 // 随机数  x到y  就等于 x-x到y-x再加上x比如100倒110 ：100-100到110-100 0到10 加上100
// Math.random()*12+3
// Math.random()*10+150
// 二进制算法
// function num(x){
// 	if(x==null){
// 		return 0
// 	}
//   var y=x;
//   var z="";
// 	while(y>=2){
//         z=y%2+z;
// 		y=parseInt(y/2);
// 	}
//     if(y<2){
//         z=y+z;
//     }
// return z
// }
// console.log(num(null))

// function numHex(num,hex){
//   if(num == null||hex == null||hex ==0){
//   	return 0
//   }
//   var str = "";
//  while(num >= hex){
//   	var hexN=num%hex;
//   	str=str+hexn(hexN)
//   	num=parseInt(num/hex)
//   }
//   if(num<hex){
//   	str=hexn(num)+str
//   }
// return str
// }
// console.log(numHex(11,8))
// function hexn(hexN){
// 	switch(hexN){
//   		 case 10 :
//   		 hexN = "A"
//   		 break;
//   		 case 11 :
//   		 hexN = "B"
//   		 break;
//   		 case 12 :
//   		 hexN = "C"
//   		 break;
//   		 case 13 :
//   		 hexN = "D"
//   		 case 14 :
//   		 hexN = "E"
//   		 break ;
//   		 case 15 :
//   		 hexN = "F"
//   		 break ;
//   	}
//   	return hexN 
// }
var str = "0123456789";// 
// alert(str.substring(0));//------------"0123456789" 
// alert(str.substring(5));//------------"56789" 
// alert(str.substring(10));//-----------"" 
// alert(str.substring(12));//-----------"" 
// alert(str.substring(-5));//-----------"0123456789" 
// alert(str.substring(-10));//----------"0123456789" 
// alert(str.substring(-12));//----------"0123456789" 
// alert(str.substring(0,5));//----------"01234" 
// alert(str.substring(0,10));//---------"0123456789" 
// alert(str.substring(0,12));//---------"0123456789" 
// alert(str.substring(2,0));//----------"01" 
// alert(str.substring(2,2));//----------"" 
// alert(str.substring(2,5));//----------"234" 
// alert(str.substring(2,12));//---------"23456789" 
// alert(str.substring(2,-2));//---------"01" 
// alert(str.substring(-1,5));//---------"01234" 
// alert(str.substring(-1,-5));//--------"" 
alert(str.substr(0));//---------------"0123456789" 
alert(str.substr(5));//---------------"56789" 
alert(str.substr(10));//--------------"" 
alert(str.substr(12));//--------------"" 
alert(str.substr(-5));//--------------"0123456789" 
alert(str.substr(-10));//-------------"0123456789" 
alert(str.substr(-12));//-------------"0123456789" 
alert(str.substr(0,5));//-------------"01234" 
alert(str.substr(0,10));//------------"0123456789" 
alert(str.substr(0,12));//------------"0123456789" 
alert(str.substr(2,0));//-------------"" 
alert(str.substr(2,2));//-------------"23" 
alert(str.substr(2,5));//-------------"23456" 
alert(str.substr(2,12));//------------"23456789" 
alert(str.substr(2,-2));//------------"" 
alert(str.substr(-1,5));//------------"01234" 
alert(str.substr(-1,-5));//-----------"" 
</script>

	<!-- <script src="myScript.js">	</script> -->

</html>